package com.techsoul.module.system.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.techsoul.module.system.pojo.entity.Menu;
import com.techsoul.module.system.pojo.param.MenuSearchParam;
import com.techsoul.common.core.pojo.vo.MenuVo;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface MenuMapper extends BaseMapper<Menu> {

    /**
     * 详情
     *
     * @param id
     * @return
     */
    MenuVo findById(String id);

    /**
     * 列表
     *
     * @param params
     * @return
     */
    List<MenuVo> findAll(@Param("params") MenuSearchParam params);

    /**
     * 分页
     *
     * @param page
     * @param params
     * @return
     */
    IPage<MenuVo> findAll(Page page, @Param("params") MenuSearchParam params);

    /**
     * 用户菜单列表
     *
     * @param userId 用户ID
     * @return
     */
    List<MenuVo> findUserMenus(String userId);

    /**
     * 管理员菜单列表-路由相关
     * @return
     */
    List<MenuVo> findUserMenuForRouterAll();

    /**
     * 用户菜单列表-路由相关
     * @param userId
     * @return
     */
    List<MenuVo> findUserMenuForRouter(String userId);

    /**
     * 用户权限集合
     *
     * @param userId 用户ID
     * @return
     */
    List<String> findUserPermissions(String userId);

    /**
     * 角色菜单列表
     * @param roleId
     * @return
     */
    List<MenuVo> findRoleMenus(String roleId);

    /**
     * 角色权限集合
     *
     * @param roleIdList
     * @return
     */
    List<String> findRolePermissions(List<String> roleIdList);

}
